/*criado por Joel Correa*/


$(document).ready(function(){
	//alert("Cookie: "+getCookie());
	
	//alert("Sortable serialized: "+$.SortSerialize('sortable1').hash );
	
	
	$("#entrar_original").click(function(){
		$.setCookie('ConfigCaixas', '', { duration: 90 });
		location.reload();
	});
	
	//togle actions
	$(".toggle").click(function(){
		visibilidade_salvar = $(this).parent().parent().children(".portlet_content").css('display');
		principal_ID = $(this).parent().parent().attr("id");
		
		//Chama funcoes especificas
		if(visibilidade_salvar == "none"){
			//reduzir!
			insereNaoDuplicado('reduzir', principal_ID);
		}else if(visibilidade_salvar == "block"){
			//expandir
			insereNaoDuplicado('expandir', principal_ID);
		}
	});

	
	//$.setCookie('ConfigCaixas', '', { duration: 90 });
	//$.setCookie('PosicCaixas', '', { duration: 90 });
	
	//Testa se cookie das caixas j? foi salvo
		//N?o foi salvo ainda
		if($.readCookie('ConfigCaixas') == null){
			$.setCookie('ConfigCaixas', '', { duration: 90 });
		}else{ //J? foi salvo
			//Leitura dos cookies
			leAcoes(getCookie());
		}

});


//=========================================================================================================
// ----> Fun??es de Cookies

function getCookie(){
	return $.readCookie('ConfigCaixas')
}

//Atualiza valor do cookie
function gravaCookie(ID, acao){
	//Se nao houver pq testar comandos invertidos, nem testa
	if(getCookie()!= ""){
		//alert("cookie JA POSSUI valores... inserindo '"+acao+"@"+ID+"'");
		insereNaoDuplicado(acao, ID);
	}else{
		//alert("cookie ate entao VAZIO... inserindo '"+acao+"@"+ID+"'");
		$.setCookie('ConfigCaixas',acao+"@"+ID, { duration: 90 });		
	}
}


//=========================================================================================================
// ----> Fun??es de A??es


/**
 * insereNaoDuplicado()
 * 
 * Insere cookie, testando comandos invertidos.
 */ 
function insereNaoDuplicado(acao, ID){
	//str_acoes_ID = $("#comando").attr('value').split("#");
	str_acoes_ID = getCookie().split("#");
	
	
	//Conta substituicoes feitas
	contaSubstituicoes = 0;
	
	//Testa acoes ja gravadas
	for(i=0;i<str_acoes_ID.length;i++){
		acao_ID = str_acoes_ID[i].split("@");
	
		//acao_ID[0] = Acao
		//acao_ID[1] = ID
		
		//alert("-ID gravado:"+acao_ID[1] + " -ID inserir:" +  ID+" -Iguais?"+(acao_ID[1] == ID));
		
		//ID Igual
		if(acao_ID[1] == ID){
			
			//Testa acao gravada
			if(acao_ID[0] != acao){
				//ID Igual, acao DIFERENTE (Pode ser INVERTIDA)!
				
				//Comandos invertidos!!
				if(acao == "abrir" & acao_ID[0] == "fechar"){
					//Apaga item da lista de comandos
					ApagarItemCookie(ID, "fechar");
					
					//Atualiza contador de substituicoes
					contaSubstituicoes = contaSubstituicoes+1;
				
				}else if(acao == "fechar" & acao_ID[0] == "abrir"){
					//Apaga item da lista de comandos
					ApagarItemCookie(ID, "abrir");
				
					//Atualiza contador de substituicoes
					contaSubstituicoes = contaSubstituicoes+1;
				
				}else if(acao == "expandir" & acao_ID[0] == "reduzir"){
					//Apaga item da lista de comandos
					ApagarItemCookie(ID, "reduzir");
				
					//Atualiza contador de substituicoes
					contaSubstituicoes = contaSubstituicoes+1;
				
				}else if(acao == "reduzir" & acao_ID[0] == "expandir"){
					//Apaga item da lista de comandos
					ApagarItemCookie(ID, "expandir");
					
					//Atualiza contador de substituicoes
					contaSubstituicoes = contaSubstituicoes+1;
				
				}
			
			}else{
				//ID Igual, acao REPETIDA! Nao sera feito nada.
			}
		}
	}
	
	if(contaSubstituicoes == 0){
		//NENHUMA substituicao feita. Item sera inserido no cookie
		$.setCookie('ConfigCaixas',getCookie()+"#"+acao+"@"+ID, { duration: 90 });
	}
}


function ApagarItemCookie(ID, acaoApagar){
	novoCookieAtualizado = "";
	
	str_acoes_ID = getCookie().split("#");
	
	//Itera sobre acoes
	itensJaInseridos = 0;
	
	for(i=0;i<str_acoes_ID.length;i++){
		acao_ID = str_acoes_ID[i].split("@");
		
		//Primeira entrada
		if(itensJaInseridos==0){
			//Encontrou item para ser retirado
			if(acao_ID[1] == ID && acao_ID[0] == acaoApagar){
				//Nao sera inserido NADA!
			}else if(acao_ID[0]!="" && acao_ID[1]!="undefined"){
				
				//Insere itens que nao tem relacao com retirada.
				novoCookieAtualizado = novoCookieAtualizado+acao_ID[0]+"@"+acao_ID[1];
				
				//Atualiza contador de insercoes
				itensJaInseridos=itensJaInseridos+1;
			}
			
		}else{
			//Encontrou item para ser retirado
			if(acao_ID[1] == ID && acao_ID[0] == acaoApagar){
				//Nao sera inserido NADA!
			}else if(acao_ID[0]!="" && acao_ID[1]!="undefined"){
				//Insere itens que nao tem relacao com retirada.
				novoCookieAtualizado = novoCookieAtualizado+"#"+acao_ID[0]+"@"+acao_ID[1];
				
				//Atualiza contador de insercoes
				itensJaInseridos=itensJaInseridos+1;
			}
		}
	}
	//alert("original:"+$("#comando").attr('value')+"\nNovoCookieAtualizado:"+novoCookieAtualizado);
	$.setCookie('ConfigCaixas', novoCookieAtualizado, { duration: 90 });		
}


/**
 * leAcoes()
 * 
 * Leitor de a??es para portlets.
 */ 
function leAcoes(strAcoes){
	str_acoes_ID = strAcoes.split("#");
	
	//Itera sobre acoes
	for(i=0;i<str_acoes_ID.length;i++){
		acao_ID = str_acoes_ID[i].split("@");

		//Chama fun??o de execu??o de a??es
		rodaAcoes(acao_ID[0], acao_ID[1]);
	}
}

function rodaAcoes(acao, ID){
	//A??es poss?veis
	if(acao=="abrir"){
		abrir(ID);
	}else if(acao=="fechar"){
		fechar(ID);
	}else if(acao=="reduzir"){
		reduzir(ID);
	}else if(acao=="expandir"){
		expandir(ID)
	}
	
	//alert(acao+": "+ID);
}

/**
 * reduzirComCookie()
 */ 
function reduzirComCookie(ID){
	gravaCookie(ID, 'reduzir');
}

/**
 * reduzir()
 * 
 * A??o de reduzir portlets.
 */ 
function reduzir(ID){
	$("#"+ID).children('.portlet_content').css('display', 'none');
}

/**
 * expandir()
 * 
 * A??o de expandir portlets.
 */ 
function expandirComCookie(ID){
	gravaCookie(ID, 'expandir');
}

/**
 * expandir()
 * 
 * A??o de expandir portlets.
 */ 
function expandir(ID){
	$("#"+ID).children('.portlet_content').css('display', 'block');
}


/**
 * fecharComCookie()
 */ 
function fecharComCookie(ID){
	if( $("#"+ID).css('display') != "none" ){
		$("#"+ID).css('display', 'none');
		gravaCookie(ID, 'fechar');
	}
}
/**
 * fechar()
 */ 
function fechar(ID){
	$("#"+ID).css('display', 'none');
}

/**
 * abrirComCookie()
 */ 
function abrirComCookie(ID){
	if( $("#"+ID).css('display') != "block" ){
		$("#"+ID).css('display', 'block');
		gravaCookie(ID, 'abrir');
	}
}

/**
 * abrir()
 */ 
function abrir(ID){
	$("#"+ID).css('display', 'block');
}




/* jQuery CooQuery Plugin v2 (minified) - http://cooquery.lenonmarcel.com.br/
Copyright 2009, 2010 Lenon Marcel
Dual licensed under the MIT and GPL licenses.
http://www.opensource.org/licenses/mit-license.php
http://www.gnu.org/licenses/gpl.html 

http://plugins.jquery.com/project/cooquery
*/
(function($){$.setCookie=function(name,value,options){if(typeof name==='undefined'||typeof value==='undefined')
return false;var str=name+'='+encodeURIComponent(value);if(options.domain)str+='; domain='+options.domain;if(options.path)str+='; path='+options.path;if(options.duration){var date=new Date();date.setTime(date.getTime()+options.duration*24*60*60*1000);str+='; expires='+date.toGMTString();}
if(options.secure)str+='; secure';return document.cookie=str;};$.delCookie=function(name){return $.setCookie(name,'',{duration:-1});};$.readCookie=function(name){var value=document.cookie.match('(?:^|;)\\s*'+name.replace(/([-.*+?^${}()|[\]\/\\])/g,'\\$1')+'=([^;]*)');return(value)?decodeURIComponent(value[1]):null;};$.CooQueryVersion='v 2.0';})(jQuery);


//=========================================================================================================
// ----> Fun??es de posicionamento


//Leitura dos cookies!
function carregaPosicionaCaixas(){
		
		$("#entrar_original").click(function(){
			$.delCookie('PosicCaixas');
			$.delCookie('ConfigCaixas');
		});
		
		if($.readCookie('PosicCaixas') == null || $.readCookie('PosicCaixas') == ""){
			$.setCookie('PosicCaixas', '', { duration: 90 });
		}else{ //J? foi salvo
			//Leitura dos cookies
			//alert( $.readCookie('PosicCaixas') );
			mandarParaAreaTransf();
			inserirNasPosicoes();
		}
		
		$("#columns").children().children().children().show();
		
}

function mandarParaAreaTransf(){
	$("body")
		.append("<div id='area_transf' style='display:none;position:absolute;'></div>");
	
	$(".portlet").appendTo("#area_transf");
}

//Leitura dos cookies!
function inserirNasPosicoes(){
	colunas_cookies = $.readCookie('PosicCaixas').split('#');

	
	//Loop nas colunas de posicionamento
	for(i=0; i<colunas_cookies.length; i++){
		coluna_ids = colunas_cookies[i].split("@");
		
		coluna = coluna_ids[0];
		ids = coluna_ids[1];
		
		array_ids = ids.split(";");
		
		//loop nos itens gravados na coluna
		for(j=0; j<array_ids.length; j++){
			
			//Nao busca ids vazios
			if( array_ids[j] != "" ){
				insereNaColuna(coluna, array_ids[j]);
			}
		}
		
		
		
	}
}

function insereNaColuna(id_coluna, portlet_ID){
	coluna_inserir = $("#columns").children().children().children().get(id_coluna);
	
	$("#"+portlet_ID).appendTo(coluna_inserir);
}

function gravarPosicoes(){
	str_resultado_cookie = "";
	
	//Itera sobre colunas de posicionamento e seus subitens
	$("#columns").children().children().children().each(function(index){
		
		//Testa se ? o primeiro index (para insercao no cookie)
		if(index==0){
			str_resultado_cookie += index+"@"
		}else{
			str_resultado_cookie += "#"+index+"@"
		}
		
		//Itera sobre portlets
		$(this).children().each(function(){
			//Restringe entrada aos IDs permitidos
			if( $(this).attr('id') != "sortHelper" && $(this).attr('id') != "" ){
				str_resultado_cookie += $(this).attr('id')+";"
			}
		});
	});

	$.setCookie('PosicCaixas', str_resultado_cookie, { duration: 90 });
	
}
